<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2017/12/26 0026
 * Time: 14:47
 */

namespace app\admin\logic;

use app\admin\model\Qudao as Qudao_model;
use function PHPSTORM_META\type;
use think\Request;
use think\Cache;
use nx\Data;

class Qudao{

    public $Qudao_model = '';

    /**获取模型
     * @return Qudao_model|string
     */
    public function getModel()
    {
        if (empty($this->Qudao_model)) {
            $this->Qudao_model = new Qudao_model();
        }
        return $this->Qudao_model;
    }

    /**获取所有的类别类别（供获取器使用）
     * @return array|false|mixed|\PDOStatement|string|\think\Collection
     */
    public static function QudaosToText()
    {
        $Qudaos = self::getAllSources();
        $Qudaos = collect($Qudaos)->column('title', 'id');
        return $Qudaos;
    }

    /**获取所有的来源来源（供获取器使用）
     * @return array|false|mixed|\PDOStatement|string|\think\Collection
     */
    public static function SourcesToInt(){
        $Qudaos = self::getAllSources();
        $Qudaos = collect($Qudaos)->column('id','title');
        return $Qudaos;
    }

    /**将所有类别进行树形排列
     * @return array|false|mixed|\PDOStatement|string|\think\Collection
     */
    public function getAllQudaoToTree()
    {
        $Qudaos = $this->getAllSources();
        $Qudaos = Data::tree($Qudaos, 'title', 'id', 'pid');
        return $Qudaos;
    }

    /**获得所有的类别（从缓存中）
     * @return false|mixed|\PDOStatement|string|\think\Collection   返回数组
     */
    public function getAllSources()
    {
        $Qudaos = Cache::get('allQudaos');
        if (!empty($Qudaos)) return $Qudaos;
        $Qudaos = $this->getModel()->where('status',1)->order('sort')->select();
        if (empty($Qudaos)) return $Qudaos;
        $Qudaos = collection($Qudaos)->append(['status_text'])->toArray();
        Cache::set('allQudaos', $Qudaos);
        return $Qudaos;
    }


    /**
     * 获取类别 select 数据
     * @return array
     * @author: Huang
     */
    public function getAllText()
    {
        $Qudaos = $this->getAllSources();
        $companys = collect($Qudaos)->where('type',1)->all();
        return $companys;
    }

    public function getAllTexts()
    {
        $Qudaos = $this->getAllSources();
        $companys = collect($Qudaos)->where('type',2)->all();
        return $companys;
    }

    /**
     * 获取某类别的所有下属类别
     * @param $Qudao_id
     * @return array|mixed
     */
    public function getNextQudaos($Qudao_id)
    {
        $data = $this->getAllSources();
        $Qudaos = Data::channelList($data, $Qudao_id, '— ', 'id', 'pid');
        return $Qudaos;
    }


    public function addQudao($data)
    {
        if (empty($data)) {
            return ['result' => false, 'msg' => '数据丢失'];
        }
        if (!empty($data['code'])) {
            $data['code'] = strtoupper(trim($data['code']));
        }
        $result = $this->getModel()->allowField(true)->validate(true)->save($data);
        if (false === $result) {
            return ['result' => false, 'msg' => $this->getModel()->getError()];
        } else {
            Cache::rm('allQudaos');
            return ['result' => true, 'msg' => '类别添加成功'];
        }
    }

    public function editQudao($data)
    {
        if (empty($data['id'])) {
            return ['result' => false, 'msg' => 'ID丢失'];
        }
        isset($data['status']) ?: $data['status'] = 1;
        $result = $this->getModel()->allowField(true)->validate(true)->isUpdate(true)->save($data);
        if (false === $result) {
            return ['result' => false, 'msg' => $this->getModel()->getError()];
        } else {
            Cache::rm('allQudaos');
            return ['result' => true, 'msg' => '类别修改成功'];
        }
    }

    public function delQudao($id)
    {
        if (empty($id)) {
            return ['result' => false, 'msg' => '请选择要操作的数据'];
        }
        if (Qudao_model::get($id)) {
            if (Qudao_model::destroy($id)) {
                Cache::rm('allQudaos');
                return ['result' => true, 'msg' => '删除成功'];
            } else {
                return ['result' => false, 'msg' => '删除失败'];
            }
        } else {
            return ['result' => false, 'msg' => '要删除的数据不存在'];
        }
    }

//    /**
//     * 获取启用的地区
//     * @return array|false|mixed|\PDOStatement|string|\think\Collection
//     */
//    public function getEnabledQudaos(){
//        $states = $this->getAllQudaos();
//        $states = collect($states)->where('status',1)->all();
//        $states = collection($states)->toArray();
//        $states = array_merge($states);
//        return $states;
//    }



}



//class Qudao
//{
//    public $qudao_model = '';
//
//    /**
//     * 获取模型
//     * @return qudao_model|string
//     */
//    public function getModel(){
//        if (empty($this->Qudao_model)){
//            $this->Qudao_model = new Qudao_model();
//        }
//        return $this->Qudao_model;
//    }
//
//    /**
//     * 获得所有的渠道来源（从缓存中）
//     * @return false|mixed|\PDOStatement|string|\think\Collection   返回数组
//     */
//    public function getAllSources(){
//        $Qudao=Cache::get('allQudao');
//        if (!empty($Qudao)){
//            return $Qudao;
//        }else{
//            $Qudao = qudao_model::all();
//            $Qudao= collection($Qudao)->toArray();
//            Cache::set('allQudao',$Qudao);
//            return $Qudao;
//        }
//    }
//
//    public function delQudao($id)
//    {
//        if (empty($id)) {
//            return ['result' => false, 'msg' => '请选择要操作的数据'];
//        }
//        if (Qudao_model::get($id)) {
//            if (Qudao_model::destroy($id)) {
//                Cache::rm('allQudaos');
//                return ['result' => true, 'msg' => '删除成功'];
//            } else {
//                return ['result' => false, 'msg' => '删除失败'];
//            }
//        } else {
//            return ['result' => false, 'msg' => '要删除的数据不存在'];
//        }
//    }
//
//
//}